binwalk是啥?
簡單來說,binwalk
是一個超強的檔案分析和提取工具。它可以掃描任何檔案,找出裡面是不是藏了「其他的檔案」。
最常見的情境,就是在一張看似正常的圖片、一個音檔,甚至是一個韌體檔案裡,揪出被偷偷塞進去的壓縮檔、腳本或其他任何東西。
你有沒有想過,為什麼電腦能分辨 .jpg 跟 .png?明明副檔名可以隨便改。
檔案簽名 (Magic Bytes)
幾乎所有檔案格式的開頭,都有一小段固定的、獨一無二的 bytes,就像是檔案的身分證。
FF D8 FF E0
89 50 4E 47
50 4B 03 04
binwalk
做的事情,就是拿著一本「檔案簽名大全」,去地毯式掃描你給它的檔案。從檔案的第 0 個 byte 開始,一個一個比對。
掃描過程大概是這樣:
challenge.jpg
)當成一長串的 010101。一張可愛的貓貓圖.jpg
binwalk
眼中看到的:
[JPEG 圖片的資料]...[ZIP 壓縮檔的資料]...[可能還有別的鬼東西]
binwalk
可以幫你節省超多時間。-e
參數,自動把藏起來的檔案解壓縮並存到資料夾裡。
假設你今天在比賽中拿到一個檔案 mystery.png
,檔案大小有點可疑,不像一張單純的圖片。
直接上 binwalk
:
$ binwalk mystery.png
你可能會看到類似這樣的輸出:
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 1024 x 768, 8-bit/color RGB, non-interlaced
4824 0x12D8 Zip archive data, at least v2.0 to extract, compressed size: 12345, uncompressed size: 54321, name: secret/
...
報告清楚地告訴你,在 4824
的位置,藏了一個 Zip 壓縮檔!
接下來,使用 -e
參數自動提取:
$ binwalk -e mystery.png
binwalk
會建立一個叫做 _mystery.png.extracted
的資料夾,裡面就靜靜地躺著它挖出來的 secret/
資料夾,而你的 flag 很可能就在裡面!
好啦,今天的 binwalk
就介紹到這。
大家明天見 wink wink